/**
 * Software License, Version 1.0
 * 
 * Copyright 2003 The Trustees of Indiana University.  All rights reserved.
 * 
 *
 *Redistribution and use in source and binary forms, with or without 
 *modification, are permitted provided that the following conditions are met:
 *
 *1) All redistributions of source code must retain the above copyright notice,
 * the list of authors in the original source code, this list of conditions and
 * the disclaimer listed in this license;
 *2) All redistributions in binary form must reproduce the above copyright 
 * notice, this list of conditions and the disclaimer listed in this license in
 * the documentation and/or other materials provided with the distribution;
 *3) Any documentation included with all redistributions must include the 
 * following acknowledgement:
 *
 *"This product includes software developed by the Community Grids Lab. For 
 * further information contact the Community Grids Lab at 
 * http://communitygrids.iu.edu/."
 *
 * Alternatively, this acknowledgement may appear in the software itself, and 
 * wherever such third-party acknowledgments normally appear.
 * 
 *4) The name Indiana University or Community Grids Lab or NaradaBrokering, 
 * shall not be used to endorse or promote products derived from this software 
 * without prior written permission from Indiana University.  For written 
 * permission, please contact the Advanced Research and Technology Institute 
 * ("ARTI") at 351 West 10th Street, Indianapolis, Indiana 46202.
 *5) Products derived from this software may not be called NaradaBrokering, 
 * nor may Indiana University or Community Grids Lab or NaradaBrokering appear
 * in their name, without prior written permission of ARTI.
 * 
 *
 * Indiana University provides no reassurances that the source code provided 
 * does not infringe the patent or any other intellectual property rights of 
 * any other entity.  Indiana University disclaims any liability to any 
 * recipient for claims brought by any other entity based on infringement of 
 * intellectual property rights or otherwise.  
 *
 *LICENSEE UNDERSTANDS THAT SOFTWARE IS PROVIDED "AS IS" FOR WHICH NO 
 *WARRANTIES AS TO CAPABILITIES OR ACCURACY ARE MADE. INDIANA UNIVERSITY GIVES
 *NO WARRANTIES AND MAKES NO REPRESENTATION THAT SOFTWARE IS FREE OF 
 *INFRINGEMENT OF THIRD PARTY PATENT, COPYRIGHT, OR OTHER PROPRIETARY RIGHTS. 
 *INDIANA UNIVERSITY MAKES NO WARRANTIES THAT SOFTWARE IS FREE FROM "BUGS", 
 *"VIRUSES", "TROJAN HORSES", "TRAP DOORS", "WORMS", OR OTHER HARMFUL CODE.  
 *LICENSEE ASSUMES THE ENTIRE RISK AS TO THE PERFORMANCE OF SOFTWARE AND/OR 
 *ASSOCIATED MATERIALS, AND TO THE PERFORMANCE AND VALIDITY OF INFORMATION 
 *GENERATED USING SOFTWARE.
 */
package cgl.narada.wsinfra.deployment.axis.wsrm;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * Stores parameters in order to runreliable messaging. It reads variables
 * from properties file.
 *
 * @author Beytullah Yildiz
 * $Date: 2005/07/29 22:45:40 $
 * $Revision: 1.1 $
*/



public class WsrmServiceParameters {

  private static String moduleName = "WsrmServiceParameters";
  private static Properties properties = null;
  private static final String DEFAULT_PROPERTIES_FILE =
      "config/services.properties";

  private static String toAddress =
      "http://everest.ucs.indiana.edu:8080/axis/services/SourceService";

  private static String fromAddress =
      "http://everest.ucs.indiana.edu:8080/axis/services/SourceService";

  private static String configFile =
      "/home/byildiz/Research/docAndcode/Narada/wsinfra_02_26/config/wsrm1.txt";

  private static String serviceMethodName = "wsInfraProcessMethod";

  private static String applicationMessage="wsrm.application.message";

  private static String responseMessage="wsrm.response.message";

  private static String handlers="";

  private static String clientServiceAddress="";

  private static String targetServiceAddress="";

  static {
    loadProperties();
  }

  public WsrmServiceParameters() {

  }
  /**
   * Setters and Getters to access service variables
   */
  public static void setToAddress(String to) {
    toAddress = to;
  }

  public static String getToAddress() {
    return toAddress;
  }

  public static void setFromAddress(String from) {
    fromAddress = from;
  }

  public static String getFromAddress() {
    return fromAddress;
  }

  public static void setConfigFile(String cf) {
    configFile = cf;
  }

  public static String getConfigFile() {
    return configFile;
  }

  public static void setServiceMethodName(String smn) {
    serviceMethodName = smn;
  }

  public static String getServiceMethodName() {
    return serviceMethodName;
  }

  public static void setHandlerChain(String hc) {
    handlers = hc;
  }

  public static String getHandlerChain() {
    return handlers;
  }

  public static void setApplicationMessage(String aMes) {
    applicationMessage = aMes;
  }

  public static String getApplicationMessage() {
    return applicationMessage;
  }

  public static void setResponseMessage(String rm) {
    responseMessage = rm;
  }

  public static String getResponseMessage() {
    return responseMessage;
  }

  public static void setClientServiceAddress(String csa) {
    clientServiceAddress = csa;
  }

  public static String getClientServiceAddress() {
    return clientServiceAddress;
  }

  public static void setTargetServiceAddress(String csa) {
    targetServiceAddress = csa;
  }

  public static String getTargetServiceAddress() {
    return targetServiceAddress;
  }

  /**
   * reads the file into properties.
   */
  public static java.util.Properties getProperties(String fileName) {

    if (properties != null) {
      return properties;
    }

    Properties p = null;

    if (fileName == null || fileName.equals("")) {
      fileName = DEFAULT_PROPERTIES_FILE;

    }
    try {
      File file = new File(fileName);

      if (file.exists()) {
        p = new Properties();
        p.load(new FileInputStream(file));

      }
    }
    catch (IOException ioe) {
      ioe.printStackTrace();
    }
    catch (Exception e) {
      e.printStackTrace();
    }

    try {
      InputStream is = WsrmServiceParameters.class.getResourceAsStream("/" +
          fileName);
      if (is != null) {
        p = new Properties();
        p.load(is);
      }
    }
    catch (Exception e) {
      System.out.println("Properties file not found in classpath.");

    }

    return p;
  }
  /**
   * loads variables from properties intance.
   */
  public static void loadProperties() {

    properties = getProperties("config/services.properties");
    try {
      fromAddress = properties.getProperty("From.Address", fromAddress).trim();
      toAddress = properties.getProperty("To.Address", toAddress).trim();
      configFile = properties.getProperty("Configuration.File", configFile).
          trim();
      serviceMethodName = properties.getProperty("Service.Method.Name",
                                                 serviceMethodName).trim();
      handlers = properties.getProperty("Handlers.Chain", handlers).trim();

      applicationMessage = properties.getProperty("Aplication.Message",
                                                  applicationMessage).trim();
      responseMessage = properties.getProperty("Response.Message",
                                               responseMessage).trim();

      clientServiceAddress = properties.getProperty("Client.Service.Address",
          clientServiceAddress).trim();
      targetServiceAddress = properties.getProperty("Target.Service.Address",
          targetServiceAddress).trim();
    }
    catch (Exception e) {
      System.out.println(moduleName + e);
    }
  }

}